************************************* * Assembler: ATMAS-II * BEISPIEL: Erzeugen einer boot- * faehigen Diskette * * P. Finzel 1986 ************************************* BOOTADR EQU $700 Anfang Bootpgm. ABLAGE EQU $A900 Ablage des Bootpgm. DRIVE EQU 1 Aktuelles Laufwerk RTCLK EQU $14 VBI-Uhr DOSVEC EQU $0A Reset-Vektor COLPF2 EQU $D018 Farbregister WSYNC EQU $D40A Synchron. VCOUNT EQU $D40B Rasterzeile DSKINV EQU $E453 Disk-Handler-Einsprung * * DBC-Kontrollblock * DUNIT EQU $301 Drive-Nummer DCOMND EQU $302 Disk-Befehl DBUFLO EQU $304 Bufferadresse lo DBUFHI EQU $305 ; -"- hi DAUX1 EQU $30A Sektornummer lo DAUX2 EQU $30B ; -"- hi *------------------------------------------ * BOOTGENERATOR *------------------------------------------ ORG $A800 LDA #1 Sektor 1 LDX #ABLAGE:L Bufferadresse LDY #ABLAGE:H JSR PUTSEC Sektor schreiben RTS *------------------------------------------ * Sektor schreiben: * : Sektornummer * : Buffer LSB * : Buffer MSB *------------------------------------------ PUTSEC STA DAUX1 Sektornummer LDA #0 STA DAUX2 STX DBUFLO STY DBUFHI LDA #DRIVE Drive 1 STA DUNIT LDA #'W Sektor lesen STA DCOMND JSR DSKINV RTS *------------------------------------------ * Bootprogramm * * Dieses Programm wird in den Boot- * sektor geschrieben *------------------------------------------ ORG BOOTADR,ABLAGE BOOTPGM DFB 0 DFB 1 DFW BOOTADR DFW BOOTINI * * Einsprung 'Bootfortsetzung' * LDA #SCRCOL:L Einsprungadresse STA DOSVEC nach DOSVEC LDA #SCRCOL:H STA DOSVEC+1 CLC kein Fehler RTS * * Einsprung durch DOSVEC * SCRCOL CLC LDA VCOUNT Bild-Zaehler ADC RTCLK plus Raster-Zeile STA WSYNC Warte auf HSYNC STA COLPF2 Farbregister JMP SCRCOL * * Einsprung durch DOSINI * BOOTINI RTS keine Init.